package base;

import configs.Configuracao;

public class Individuo implements Comparable<Individuo> {
	
	public double[] caracteristicas;
	public double aptidao;
	public double classificacao;

	public Individuo(double [] caracteristicas)
	{
		this.caracteristicas = caracteristicas;
	}

	public int compareTo(Individuo o) {
		if(Configuracao.OBJETIVO.equals(Configuracao.MINIMIZACAO))
		{
			if(this.aptidao == o.aptidao)
				return 0;
			
			if(this.aptidao < o.aptidao)
				return -1;
			
			if(this.aptidao > o.aptidao)
				return 1;
		}
		else if(Configuracao.OBJETIVO.equals(Configuracao.MAXIMIZACAO))
		{
			if(this.aptidao == o.aptidao)
				return 0;
			
			if(this.aptidao < o.aptidao)
				return 1;
			
			if(this.aptidao > o.aptidao)
				return -1;
		}
		
		return 0;
	}
	
	public boolean equals(Object o)
	{
		if(o instanceof Individuo)
		{
			Individuo i = (Individuo) o;
			
			return i.hashCode() == this.hashCode();
		}
		
		return false;
	}
	
}
